#post请求、cookie、session、代理

#一、post请求
'''
post请求:登录注册，传输大文本内容
requests.post(url,data)
data参数接收一个字典
'''

#get跟post的区别：
'''
get请求直接向服务器发送请求，获取响应内容
post请求是先给服务器一些数据，然后再获取响应

get请求携带参数 -- params
post请求携带参数-- data

'''

#二、cookie 模拟登录

#找到登录后的url
import requests
url = 'http://…………'

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0'
    'Cookie':'………………'#…………是headers里面找到cookie的内容，复制过来
}

res = requests.get(url,headers=headers)
print(res.text)


#post请求举例 -- 金山翻译
'''
进入金山翻译主页，输入一个中文词，如“学习”点翻译，然后打开开发者工具F12
查找相关内容的header项下的url和data
'''
import requests
import json

url = 'http://…………'  #…………是查找到的url信息，复制黏贴即可

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0'
}

word = input('请输入你要翻译的内容：')

#构建data参数字典
post_data = {
    'from': 'zh',
    'to': 'en',
    'q':word
}#data参数从header项下找到后复制过来调整一下格式，q值可以调整为自己想翻译的内容。

res = requests.post(url,headers=headers,data=post_data)
print(res.text)

#解析数据 ，将json数据转换为python字典
dic = json.loads(res.text)
print(type(dic))
print(dic['out'])


#三、session -- 自动处理cookie
'''
requests模块中的session类能够自动处理发送请求获取响应过程中产生的cookie,进而达到
状态保持的目的。
自动处理cookie，即下一次请求会带上前一次的cookie。

session = requests.session() 实例化session对象
response = session.post(url,data=data)


使用session访问登录后的页面
session.get(url.text)


使用步骤：
1.对访问登录后才能访问的页面去进行抓包
2.确定登录请求的url地址，请求方法和所需的参数
3.确定登录后惨能访问的页面url和请求方法
4.利用requests.session完成代码

'''
#cookie池
'''
user-agent池：短时间内多次发出请求，尽量每一次请求都用不同的用户代理

cookie池：每一个cookie就代表一个账号

cookie有有效期
session不用担心有效期的问题

'''
#cookie和session的区别：
'''
1.cookie数据放在客户的浏览器上，session数据放在服务器上
2.cookie不是很安全，他人可以分析存放在本地的cookie并进行cookie欺骗，考虑安全应使用session
3.session会在一定时间内保存在服务器上，考虑到降低服务器性能，应当使用cookie
4.可以考虑将登录信息等重要信息存放在session，其他信息可以保留在cookie中
'''
